#ifndef __WIZ_BASE_CAST_HPP_STATIC__SHANHAOBO_19800429__
#define __WIZ_BASE_CAST_HPP_STATIC__SHANHAOBO_19800429__

#include "../../../Config/WizConfig.hpp"

namespace Wiz
{
    namespace Cast
    {
        ////////////////////////////////////////////////////////////////////////
        template<class Ret, class Arg>
        WIZ_INLINE Ret Static(Arg rSrc)
        {
            return static_cast<Ret>(rSrc);
        }

        template<class Ret, class Arg>
        WIZ_INLINE Ret Static(const Arg* const rSrc)
        {
            return static_cast<Ret>(static_cast<const void* const>(rSrc));
        }

        template<class Ret, class Arg>
        WIZ_INLINE Ret Static(Arg* const rSrc)
        {
            return static_cast<Ret>(static_cast<void* const>(rSrc));
        }
        ////////////////////////////////////////////////////////////////////////
    } /// end of namespace Cast
} /// end of namespace Wiz

#define WIZ_DEFCAST_STATIC(T, Dest, Src)	T Dest = ::Wiz::Cast::Static<T>(Src)

#endif /*__WIZ_BASE_CAST_HPP_STATIC__SHANHAOBO_19800429__*/
